
/**
 * <p>Title: UserRestImpl</p>
 * <p>Description: UserRest的实现类</p>
 * <p>Copyright: Shanghai Batchsight Pharmaceutical Technologies, Inc. Copyright(c) 2016</p>
 * @author Huang Zhongwei
 * @version 1.0
 * <pre>Histroy:
 *       2016-11-23  Huang Zhongwei  Create
 *</pre>
*/

package cn.jhg.account.rest;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;

import cn.jhg.account.entity.User;
import cn.jhg.account.entity.UserStatus;
import cn.jhg.account.service.UserSvc;
import cn.jhg.account.util.JsonUtil;
import cn.jhg.account.util.ServiceResult;

import cn.jhg.account.service.LoginSvc;

@Component
public class UserRestImpl implements UserRest {
	@Resource
	private UserSvc userSvc;
	@Resource 
	private LoginSvc loginSvc;
	
	
	
	/**
	 * 按 id 获取用户
	 * @param id	用户id
	 * @return		用户实体
	 */
	public User getUserById(int id) {
		ServiceResult<User> result=userSvc.getUserById(id, 1);
		User user=result.getData();
		
		return user;
	}

	/**
     * 按账号获取用户
     * @param account	用户账号
     * @return			用户实体
     */
	@Override
	public User getUserByAccount(String account) {
		// TODO Auto-generated method stub
		ServiceResult<User> result=userSvc.getUserByAccount(account,1);
		User user=result.getData();
		return user;
	}

	/**
     * 查找用户
     * @param account	用户账号（等于空表示全部）
     * @param name		用户名（等于空表示全部）
     * @param valid		用户是否有效  valid, invalid, 空（等于空表示全部）
     * @param locked	用户是否锁定 locked, unlocked, 空（等于空表示全部） 
     * @return
     */
	@Override
	public String findUsers(String account, String name, String valid,String locked) {
		// TODO Auto-generated method stub
		List<UserStatus> list=new ArrayList<UserStatus>();
		
		//状态有效
		if("Valid".equals(valid)){
			list.add(UserStatus.Valid);
		}else if("Invalid".equals(valid)){
			list.add(UserStatus.Invalid);
		}else{
			
			//do nothing
		}
		
		//状态锁定
		if("Locked".equals(locked)){
			list.add(UserStatus.Locked);
		}else if("Unlocked".equals(locked)){
			list.add(UserStatus.Unlocked);
		}else{
			//do nothing
		}
		
		//构造参数传入
		UserStatus[] status=new UserStatus[]{};
		if(list.size()>0){
			status=new UserStatus[list.size()];
			for(int i=0;i<list.size();++i){
				status[i]=list.get(i);
			}
		}
		
		ServiceResult<List<User>> result=userSvc.findUsers(account, name, status, 1);
//		return JsonUtil.packaging(result);
		return JsonUtil.packaging(result);
	}

	/**
     * 添加用户
     * @param account	用户账号
     * @param name      用户名
     * @param email     邮箱
     * @param telephone 联系电话
     * @return			添加用户ID
     */
	@Override
	public String addUser(User user,int sdid) {
		// TODO Auto-generated method stub
//		User user=new User();
//		user.setAccount(account);
//		user.setName(name);
//		user.setEmail(email);
//		user.setTelephone(telephone);
		System.out.println(user);
		ServiceResult<Integer> result=userSvc.addUser(user, sdid,0);
		int id=result.getData();
		
		ServiceResult<String> result1=loginSvc.resetPassword(id, sdid,0);
		ServiceResult<User> serviceResult=new ServiceResult<User>();
		String password=result1.getData();
		int errorCode=result.getErrorCode();
		user.setId(id);
		user.setPassword(password);
		serviceResult.setData(user);
		serviceResult.setErrorCode(errorCode);
		return JsonUtil.packaging(serviceResult);
	}

	/**
     * 更新用户
     * @param id		用户id
     * @param name      用户名
     * @param email     邮箱
     * @param telephone 联系电话
     * @return			errorCode
     */
	@Override
	public String updateUser(int id, String name, String email,int sdid,String telephone) {
		// TODO Auto-generated method stub
		System.out.println(id);
		User user=new User();
		user.setId(id);
		user.setName(name);
		user.setEmail(email);
		user.setTelephone(telephone);
		ServiceResult<Integer> result=userSvc.updateUser(user, sdid, 0);
		return JsonUtil.packaging(result);
	}

	/**
     * 解锁用户
     * @param id		用户id
     * @return			errorCode
     */
	@Override
	public String unlockedUser(int id,int sdid) {
		// TODO Auto-generated method stub
		ServiceResult<Object> result=loginSvc.unlockAccount(id, sdid,0);
		return JsonUtil.packaging(result);
	}

	/**
     * 锁定用户
     * @param id		用户id
     * @return			errorCode
     */
	@Override
	public String lockedUser(int id,int sdid) {
		// TODO Auto-generated method stub
		ServiceResult<Object> result=loginSvc.lockAccount(id, sdid,0);
		return JsonUtil.packaging(result);
	}

	 /**
     * 失效用户
     * @param id		用户id
     * @return			errorCode
     */
	@Override
	public String invalidUser(int id,int sdid) {
		// TODO Auto-generated method stub
		ServiceResult<Integer> result=userSvc.invalidateUser(id, sdid,0);
		return JsonUtil.packaging(result);
	}

	/**
     * 查找用户
     * @param account	用户账号（等于空表示全部）
     * @param name		用户名（等于空表示全部）
     * @param valid		用户是否有效  valid, invalid, 空（等于空表示全部）
     * @param locked	用户是否锁定 locked, unlocked, 空（等于空表示全部） 
     * @return
     */
	@Override
	public ServiceResult<List<User>> findUserExit(int ugid) {
		// TODO Auto-generated method stub
		System.out.println(ugid);
		ServiceResult<List<User>> result=userSvc.findUserExist(ugid, 1);
		System.out.println(result);
		return result;
	}

}

